Закрыто. Этот вопрос требует подробностей или ясности. В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Добавьте подробности и проясните проблему, отредактировав этот пост. Закрыт 1 год назад. Уточните этот вопрос Я выполняю некоторую задачу по коду и хочу получить первые 3 значения из моего массива, указав начальный индекс и получив только первые (3 или могут быть любой длины) значения из начального индекса. Я пробовал этот код, и он работает, но структура кода слишком длинная, так как я могу сделать ее короче, чтобы ее было легко понять. int n = 10; двойная подпись = новый двойной [] {1, 1, 1}; двойной [] ret = новый двойной [n]; двойная сумма = 0; ret [0] = подпись [0]; ret [1] = подпись [1]; ret [2] = подпись [2]; int x, i; for (i = 0; i
2021-01-31 08:21:10
Используя LINQ, вы можете попробовать что-то вроде этого: значения var = array.Skip (индекс) .Take (n) .ToArray (); Где index - это индекс первого элемента, а n - количество элементов, которые вы хотите выбрать. Например. https://dotnetfiddle.net/Pk1rwY В качестве примечания. Использование LINQ не означает, что ваш код будет быстрее. Он был бы более компактным / читаемым и т. Д. Чтобы оценить производительность вашего кода, вам нужно использовать что-то вроде BenchmarkDotNet. | Нет решения Linq: private static T [] Extract(T [] source, int fromIndex, int length) { если (null == источник) выбросить новое исключение ArgumentNullException (nameof (источник)); иначе если (fromIndex <0) выбросить новое исключение ArgumentOutOfRangeException (nameof (fromIndex), «Индекс From должен быть неотрицательным»); иначе, если (длина <0) выбросить новое исключение ArgumentOutOfRangeException (nameof (length), «Длина должна быть неотрицательной»); if (fromIndex> = source.Length || length == 0) вернуть новый T [0]; T [] результат = новый T [Math.Min (length, source.Length - fromIndex)]; Array.Copy (источник, fromIndex, результат, 0, result.Length); вернуть результат; } потом двойная [] подпись = новая двойная [] {0, 1, 2, 3, 4, 5}; double [] ret = Извлечь (подпись, 3, 2); Console.Write (string.Join (",", ret)); Итог: 3, 4 | Из вашего вопроса нужно воспользоваться операторами .Take и .Skip. var result = array.Skip (startIndex) .Take (numberOfElements); Таким образом, из вашего кода кажется, что вы пытаетесь сделать что-то немного другое, а именно суммирование элементов. Здесь может помочь оператор .Sum. | Не тот ответ, который вы ищете? Посмотрите другие вопросы с метками c # массивы linq или задайте свой вопрос.